FIG. 1 illustrates a collection of computer systems (e.g., clients and servers) that are interconnected by public/private networks (e.g., transmission lines and routers) to enable the transfer of information among them. These systems are often modeled by their function: client-server. In the client-server model, communication generally takes the form of a request from the client to the server asking for an operation to be performed (e.g., request for data). The server performs the work and sends a reply. A client may then retrieve and display the requested information. However, a system may operate as both a server and a client. Client-server systems communicate with each other using a variety of network protocols, such as Transmission Control Protocol/Internet Protocol (TCP/IP) and Integrated Packet Exchange (IPX), and a variety of application protocols, such as HyperText Transfer Protocol (HTTP) and File Transfer Protocol (FTP).
A system may experience hardware or software failures that degrade system performance or render the system inoperative. In order to diagnose such failures, systems may include diagnostic capability that provides various types of diagnostic information relating to the system. Such diagnostic capability may consist of monitoring software running directly on each machine to be monitored. The software may run diagnostic tests, the results of which may be saved on the machine itself. Scheduling of such diagnostic tests may also be performed directly on the machine to be monitored.
The running of monitoring software directly on a system to be monitored may have adverse effects on that system. Continuous running of such monitoring software, for example, through use of an agent, may require significant use of system resources, for examples, memory space or processor time. Resources used by the monitoring software are thus resources that are not free for use by the system for other processes, for example, serving up web pages. In addition, the scheduling of diagnostic tests directly on a system to be monitored may also require system resources that further reduce the amount of free resources available for other system processes.
Another problem is that updates to and maintenance of monitoring software running directly on each system to be monitored must be performed directly on each system. This may result in additional strain on system resources, for examples, system memory and CPU load. Updates to the software may also result in system downtime, during which a user may be unable to access the system. Since each system to be monitored has its own copy of the monitoring software, each system may need to be individually updated, resulting in additional use of system resources and additional downtime. As such, software updates performed directly on each system may lead to a decrease in system performance. Since a large amount of code or a large number of files may need to be added or updated, there is also a possibility of the individual system crashing during the update. A system crash may cause other systems on the network to crash which, in turn, may further lead to a network-wide crash.
Some prior remote monitoring schemes used a master-slave configuration whereby one of the monitored systems is configured as a master system and the other monitored systems are configured as slave systems. The designated master system collects diagnostic information from each of the slave monitored systems and then sends the collected diagnostic information to a service center for analysis. This type of configuration may require a significant use of system resources to complete two machine connections (slave-to-master and master-to-service center) through which the diagnostic information is pushed. The process may also require a large amount of time to move the diagnostic information from a slave to the master and then from the master to the service center.
Another problem with such monitoring systems is the security of diagnostic information sent over a network. One of the most common methods of implementing security controls is encryption. In monitoring systems as those description above, encryption may either not be used at all or may be used at one of various levels of security. Among the highest levels of security are 16-bit encryption techniques and byte swapping algorithms. While these processes may provide higher levels of security than that of no encryption at all, the security offered may not be adequate to prevent against more sophisticated hackers.